package com.geo.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.geo.entity.base.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 关键词实体类
 * 定义关键词信息和分析数据
 * 
 * @author GEO Team
 * @version 1.0.0
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("biz_keyword")
public class Keyword extends BaseEntity {
    
    /**
     * 关键词文本
     */
    @TableField("keyword_text")
    private String keywordText;
    
    /**
     * 关键词MD5哈希（用于去重）
     */
    @TableField("keyword_hash")
    private String keywordHash;
    
    /**
     * 企业ID
     */
    @TableField("business_id")
    private Long businessId;
    
    /**
     * 关键词类型 - BRAND:品牌词 PRODUCT:产品词 GENERIC:通用词 LONG_TAIL:长尾词 COMPETITOR:竞品词
     */
    @TableField("keyword_type")
    private String keywordType;
    
    /**
     * 意图分类 - INFORMATIONAL:信息寻求 NAVIGATIONAL:导航寻求 TRANSACTIONAL:交易意图 COMMERCIAL:商业调研
     */
    @TableField("intent_category")
    private String intentCategory;
    
    /**
     * 行业分类
     */
    @TableField("industry")
    private String industry;
    
    /**
     * 产品/服务分类
     */
    @TableField("category")
    private String category;
    
    /**
     * 语言
     */
    @TableField("language")
    private String language;
    
    /**
     * 地域/市场
     */
    @TableField("region")
    private String region;
    
    /**
     * 搜索量（月度）
     */
    @TableField("search_volume")
    private Long searchVolume;
    
    /**
     * 搜索量更新时间
     */
    @TableField("search_volume_updated")
    private LocalDateTime searchVolumeUpdated;
    
    /**
     * 竞争度（0-1）
     */
    @TableField("competition")
    private BigDecimal competition;
    
    /**
     * 竞争度等级 - LOW:低 MEDIUM:中 HIGH:高 VERY_HIGH:极高
     */
    @TableField("competition_level")
    private String competitionLevel;
    
    /**
     * CPC（每次点击成本）
     */
    @TableField("cpc")
    private BigDecimal cpc;
    
    /**
     * CPC币种
     */
    @TableField("cpc_currency")
    private String cpcCurrency;
    
    /**
     * SEO难度评分（0-100）
     */
    @TableField("seo_difficulty")
    private Integer seoDifficulty;
    
    /**
     * 商业价值评分（0-100）
     */
    @TableField("commercial_value")
    private Integer commercialValue;
    
    /**
     * 转化潜力评分（0-100）
     */
    @TableField("conversion_potential")
    private Integer conversionPotential;
    
    /**
     * 优先级评分（0-100）
     */
    @TableField("priority_score")
    private Integer priorityScore;
    
    /**
     * 趋势方向 - UP:上升 DOWN:下降 STABLE:稳定
     */
    @TableField("trend_direction")
    private String trendDirection;
    
    /**
     * 增长率（百分比）
     */
    @TableField("growth_rate")
    private BigDecimal growthRate;
    
    /**
     * 季节性指数（0-1）
     */
    @TableField("seasonality_index")
    private BigDecimal seasonalityIndex;
    
    /**
     * 相关关键词 - JSON数组格式
     */
    @TableField("related_keywords")
    private String relatedKeywords;
    
    /**
     * 长尾关键词 - JSON数组格式
     */
    @TableField("long_tail_keywords")
    private String longTailKeywords;
    
    /**
     * 目标平台 - JSON数组格式
     */
    @TableField("target_platforms")
    private String targetPlatforms;
    
    /**
     * 当前排名数据 - JSON格式，按平台存储
     */
    @TableField("current_rankings")
    private String currentRankings;
    
    /**
     * 历史最佳排名
     */
    @TableField("best_ranking")
    private Integer bestRanking;
    
    /**
     * 平均排名
     */
    @TableField("average_ranking")
    private BigDecimal averageRanking;
    
    /**
     * 排名更新时间
     */
    @TableField("ranking_updated")
    private LocalDateTime rankingUpdated;
    
    /**
     * 分析结果 - JSON格式
     */
    @TableField("analysis_result")
    private String analysisResult;
    
    /**
     * 机会评分（0-100）
     */
    @TableField("opportunity_score")
    private Integer opportunityScore;
    
    /**
     * 投资回报率预估
     */
    @TableField("estimated_roi")
    private BigDecimal estimatedRoi;
    
    /**
     * 预估流量
     */
    @TableField("estimated_traffic")
    private Long estimatedTraffic;
    
    /**
     * 建议出价
     */
    @TableField("suggested_bid")
    private BigDecimal suggestedBid;
    
    /**
     * 优化建议
     */
    @TableField("optimization_suggestions")
    private String optimizationSuggestions;
    
    /**
     * 内容策略建议
     */
    @TableField("content_strategy")
    private String contentStrategy;
    
    /**
     * AI分析模型
     */
    @TableField("ai_analysis_model")
    private String aiAnalysisModel;
    
    /**
     * 分析置信度（0-1）
     */
    @TableField("analysis_confidence")
    private BigDecimal analysisConfidence;
    
    /**
     * 最后分析时间
     */
    @TableField("last_analyzed_time")
    private LocalDateTime lastAnalyzedTime;
    
    /**
     * 监控状态 - ACTIVE:监控中 PAUSED:暂停 STOPPED:停止
     */
    @TableField("monitor_status")
    private String monitorStatus;
    
    /**
     * 监控频率 - HOURLY:每小时 DAILY:每天 WEEKLY:每周
     */
    @TableField("monitor_frequency")
    private String monitorFrequency;
    
    /**
     * 关键词状态 - ACTIVE:活跃 ARCHIVED:归档 DELETED:删除
     */
    @TableField("status")
    private String status;
    
    /**
     * 标签 - 逗号分隔
     */
    @TableField("tags")
    private String tags;
    
    /**
     * 用户自定义属性 - JSON格式
     */
    @TableField("custom_attributes")
    private String customAttributes;
    
    /**
     * 数据来源 - MANUAL:手动添加 IMPORT:导入 API:接口获取 AI_SUGGEST:AI推荐
     */
    @TableField("data_source")
    private String dataSource;
    
    /**
     * 数据来源详情
     */
    @TableField("data_source_detail")
    private String dataSourceDetail;
    
    /**
     * 年龄分布数据 - JSON格式
     */
    @TableField("age_distribution")
    private String ageDistribution;
    
    /**
     * 性别分布数据 - JSON格式
     */
    @TableField("gender_distribution")
    private String genderDistribution;
    
    /**
     * 地域分布数据 - JSON格式
     */
    @TableField("geographic_distribution")
    private String geographicDistribution;
    
    /**
     * 设备分布数据 - JSON格式
     */
    @TableField("device_distribution")
    private String deviceDistribution;
    
    /**
     * 趋势数据 - JSON格式，存储历史趋势
     */
    @TableField("trend_data")
    private String trendData;
    
    /**
     * 预测数据 - JSON格式
     */
    @TableField("prediction_data")
    private String predictionData;
    
    /**
     * 关键词类型常量
     */
    public static class KeywordType {
        public static final String BRAND = "BRAND";                  // 品牌词
        public static final String PRODUCT = "PRODUCT";              // 产品词
        public static final String GENERIC = "GENERIC";              // 通用词
        public static final String LONG_TAIL = "LONG_TAIL";         // 长尾词
        public static final String COMPETITOR = "COMPETITOR";        // 竞品词
        public static final String INFORMATIONAL = "INFORMATIONAL"; // 信息词
        public static final String TRANSACTIONAL = "TRANSACTIONAL"; // 交易词
    }
    
    /**
     * 意图分类常量
     */
    public static class IntentCategory {
        public static final String INFORMATIONAL = "INFORMATIONAL"; // 信息寻求
        public static final String NAVIGATIONAL = "NAVIGATIONAL";   // 导航寻求
        public static final String TRANSACTIONAL = "TRANSACTIONAL"; // 交易意图
        public static final String COMMERCIAL = "COMMERCIAL";       // 商业调研
    }
    
    /**
     * 竞争度等级常量
     */
    public static class CompetitionLevel {
        public static final String LOW = "LOW";                      // 低竞争
        public static final String MEDIUM = "MEDIUM";                // 中等竞争
        public static final String HIGH = "HIGH";                    // 高竞争
        public static final String VERY_HIGH = "VERY_HIGH";         // 极高竞争
    }
    
    /**
     * 趋势方向常量
     */
    public static class TrendDirection {
        public static final String UP = "UP";                        // 上升
        public static final String DOWN = "DOWN";                    // 下降
        public static final String STABLE = "STABLE";                // 稳定
    }
    
    /**
     * 监控状态常量
     */
    public static class MonitorStatus {
        public static final String ACTIVE = "ACTIVE";                // 监控中
        public static final String PAUSED = "PAUSED";                // 暂停
        public static final String STOPPED = "STOPPED";              // 停止
    }
    
    /**
     * 监控频率常量
     */
    public static class MonitorFrequency {
        public static final String HOURLY = "HOURLY";                // 每小时
        public static final String DAILY = "DAILY";                  // 每天
        public static final String WEEKLY = "WEEKLY";                // 每周
    }
    
    /**
     * 关键词状态常量
     */
    public static class Status {
        public static final String ACTIVE = "ACTIVE";                // 活跃
        public static final String ARCHIVED = "ARCHIVED";            // 归档
        public static final String DELETED = "DELETED";              // 删除
    }
    
    /**
     * 数据来源常量
     */
    public static class DataSource {
        public static final String MANUAL = "MANUAL";                // 手动添加
        public static final String IMPORT = "IMPORT";                // 导入
        public static final String API = "API";                      // 接口获取
        public static final String AI_SUGGEST = "AI_SUGGEST";       // AI推荐
    }
}